/*
 * COPYRIGHT(c) SK telecom 2009
 * This software is the proprietary information of SK telecom.
 *
 * Revision History
 * Author             Date        Description
 * --------         ----------    ---------------
 * Hyung-seok Oh     2009. 4. 29.      Description
 *
 */
package com.tistory.commons.utils;

/**
 * 게시판등의 페이지인덱스를 표시한다. 한페이지에 표시할 목록 수,페이지 수=10,10
 * 
 * @author Hyung-seok Oh
 * @version 0.1
 */
public class PagingManager {
    private static final String PREV_NPAGES_IMG = "../images/button/btn_prev_npages.gif";
    private static final String NEXT_NPAGES_IMG = "../images/button/btn_next_npages.gif";

    /**
     * 게시판등의 페이지인덱스를 표시한다. 한페이지에 표시할 목록 수,페이지 수=10,10
     * 
     * @param nPageNo
     * @param nTotCnt
     * @return
     */
    public static String getPagingStr(int nPageNo, int nTotCnt) {
        int nListSize = 10;
        int nPageSize = 10;

        return getPagingStr(nPageNo, nTotCnt, nListSize, nPageSize);
    }

    /**
     * 게시판등의 페이지인덱스를 표시한다.
     * 
     * @param nPageNo 현재페이지
     * @param nTotCnt 총 레코드 수
     * @param nListSize 한 페이지에 표시할 목록수
     * @param nPageSize 표시할 페이지수
     * @return 인덱스를 나타내는 문자열(HTML 코드) ex)▒ ☜ ▒ 1 2 3 4 5 6 7 8 9 10 ▒ ☞ 단..
     *         nTotCnt가 음수일 경우는 공백
     */
    public static String getPagingStr(int nPageNo, int nTotCnt, int nListSize, int nPageSize) {
        if (nTotCnt < 0) {
            // 총리스트수가 음수이면 공백리턴
            return "";
        }

        int nTotPage = 0;
        int nStartPage = 1;
        int nEndPage = 10;
        StringBuffer buffer = new StringBuffer(1024);

        if (nTotCnt == 0) {
            nTotPage = 1;
        } else {
            nTotPage = (nTotCnt - 1) / nListSize + 1;

        }
        nStartPage = ((nPageNo - 1) / nPageSize) * nPageSize + 1;
        nEndPage = ((nPageNo - 1) / nPageSize + 1) * nPageSize;

        buffer.append("<table>");
        buffer.append("<tr>");
        // 이전 10페이지
        buffer.append("<td class=\"pre_02\">");
        if (nPageNo <= nPageSize) {
            buffer.append("<img src=\"" + PREV_NPAGES_IMG
                    + "\">");
        } else {
            buffer.append("<a href=\"javascript:goPage(" + (nStartPage - 1) + ");\">");
            buffer.append("<img src=\"" + PREV_NPAGES_IMG
                    + "\">");
            buffer.append("</a>");
        }
        buffer.append("</td>");
        
        // 이전페이지
        buffer.append("<td class=\"pre_01\">");
//        if (nPageNo <= 1) { // 첫페이지이면
//            buffer.append("PREV");
//        } else {
//            buffer.append("<a href=\"javascript:goPage(" + (nPageNo - 1) + ");\">");
//            buffer.append("PREV");
//            buffer.append("</a>");
//        }
        buffer.append("<a href=\"javascript:goPrvPage();\">");
        buffer.append("PREV");
        buffer.append("</a>");
        buffer.append("</td>");

        for (int i = nStartPage; i <= nEndPage; i++) {
            if (i == nPageNo) {
                buffer.append("<td id=\"pg_" + i + "\">");
                buffer.append("<a href=\"javascript:\" class=\"choice\"><b>[" + i + "]</b></a>");
                buffer.append("</td>");
            } else if (i <= nTotPage) {
                buffer.append("<td id=\"pg_" + i + "\">");
                buffer.append("<a href=\"javascript:goPage(" + i + ");\">" + i + "</a>");
                buffer.append("</td>");
            }
        }
        
        // 다음페이지
        buffer.append("<td class=\"next_01\">");
//        if (nPageNo >= nTotPage) { // 라스트페이지이면
//            buffer.append("NEXT");
//        } else {
//            buffer.append("<a href=\"javascript:goPage(" + (nPageNo + 1) + ");\">");
//            buffer.append("NEXT");
//            buffer.append("</a>");
//        }
        buffer.append("<a href=\"javascript:goNextPage();\">");
        buffer.append("NEXT");
        buffer.append("</a>");
        buffer.append("</td>");

        // 다음 10페이지
        buffer.append("<td class=\"next_02\">");
        if (nStartPage >= ((nTotPage - 1) / nPageSize) * nPageSize + 1) {
            buffer.append("<img src=\"" + NEXT_NPAGES_IMG
                    + "\">");
        } else {
            buffer.append("<a href=\"javascript:goPage(" + (nEndPage + 1) + ");\">");
            buffer.append("<img src=\"" + NEXT_NPAGES_IMG
                    + "\">");
            buffer.append("</a>");
        }
        buffer.append("</td>");
        
        buffer.append("</tr>");
        buffer.append("</table>");

        return buffer.toString();
    }
}
